\hypertarget{ili9341__hal_8c}{}\section{display/ili9341\+\_\+hal.c File Reference}
\label{ili9341__hal_8c}\index{display/ili9341\+\_\+hal.\+c@{display/ili9341\+\_\+hal.\+c}}


ili9341 driver inspired by Adafruit ili9341 code All code in this file has been rewritten by Mike Gore  


{\ttfamily \#include \char`\"{}user\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include $<$stdint.\+h$>$}\\*
{\ttfamily \#include $<$stdarg.\+h$>$}\\*
{\ttfamily \#include $<$string.\+h$>$}\\*
{\ttfamily \#include $<$math.\+h$>$}\\*
{\ttfamily \#include \char`\"{}display/ili9341.\+h\char`\"{}}\\*
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{ili9341__hal_8c_ae9b390c9f820454445688b1d4d76d84d}{tft\+\_\+spi\+\_\+init\+\_\+slow} ()
\begin{DoxyCompactList}\small\item\em Initialize T\+FT S\+PI clock speed and pin for slow speed Only used to read the C\+H\+IP ID return\+: void. \end{DoxyCompactList}\item 
void \hyperlink{ili9341__hal_8c_abac73802498470361f0016d28706fe49}{tft\+\_\+spi\+\_\+init\+\_\+fast} ()
\begin{DoxyCompactList}\small\item\em Initialize T\+FT S\+PI clock speed and pin for normal speed return\+: void. \end{DoxyCompactList}\item 
void \hyperlink{ili9341__hal_8c_a28ac4cdd7bd9de529370205c64b88f8e}{tft\+\_\+spi\+\_\+begin} ()
\begin{DoxyCompactList}\small\item\em Obtain S\+PI bus for T\+FT display, assert chip select return\+: void. \end{DoxyCompactList}\item 
void \hyperlink{ili9341__hal_8c_a4f8c3c083a3cd3792dd3d995c1eb2ec5}{tft\+\_\+spi\+\_\+end} ()
\begin{DoxyCompactList}\small\item\em Release S\+PI bus from T\+FT display, deassert chip select return\+: void. \end{DoxyCompactList}\item 
void \hyperlink{ili9341__hal_8c_aded8e26c838cde7f120917432deac7a3}{tft\+\_\+reset\+\_\+init} ()
\begin{DoxyCompactList}\small\item\em Initialize I\+L\+I9341 reset G\+P\+IO return\+: void. \end{DoxyCompactList}\item 
void \hyperlink{ili9341__hal_8c_aaba28fac5eafbd4490439bec5025f30a}{tft\+\_\+reset\+\_\+enable} ()
\begin{DoxyCompactList}\small\item\em enable I\+L\+I9341 reset return\+: void \end{DoxyCompactList}\item 
void \hyperlink{ili9341__hal_8c_acc53be43cd64538a6c33e99db99d26ad}{tft\+\_\+addr\+\_\+init} ()
\begin{DoxyCompactList}\small\item\em Initialize I\+L\+I9341 command/data G\+P\+IO return\+: void. \end{DoxyCompactList}\item 
void \hyperlink{ili9341__hal_8c_ad9642ac50851a61847cfa7b769741caa}{tft\+\_\+reset\+\_\+disable} ()
\begin{DoxyCompactList}\small\item\em disnable I\+L\+I9341 reset return\+: void \end{DoxyCompactList}\item 
void \hyperlink{ili9341__hal_8c_aa975fa5ad6bb7e52356d9d66ac733196}{tft\+\_\+spi\+\_\+\+TX} (\hyperlink{send_8c_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$data, int bytes, \hyperlink{send_8c_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} command)
\begin{DoxyCompactList}\small\item\em Transmit 8 bit data array. \end{DoxyCompactList}\item 
void \hyperlink{ili9341__hal_8c_ad2eda0e245536550e1a28da1d652629e}{tft\+\_\+spi\+\_\+\+T\+X\+RX} (\hyperlink{send_8c_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$data, int bytes, \hyperlink{send_8c_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} command)
\begin{DoxyCompactList}\small\item\em Transmit and read 8 bit data array. \end{DoxyCompactList}\item 
void \hyperlink{ili9341__hal_8c_aad54db2d053d783c70669fdbd414fda1}{tft\+\_\+spi\+\_\+\+RX} (\hyperlink{send_8c_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$data, int bytes, \hyperlink{send_8c_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} command)
\begin{DoxyCompactList}\small\item\em read 8 bit data array \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} \hyperlink{structwindow}{window} $\ast$ \hyperlink{ili9341__hal_8c_a14e5cdfbb744c04570df508551f77add}{tft\+\_\+init} (void)
\begin{DoxyCompactList}\small\item\em Initialize T\+FT. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hyperlink{structwindow}{window} \hyperlink{ili9341__hal_8c_a460d9cc0fd386002d9485f2a0ed585d8}{tftwin}
\item 
\hyperlink{structwindow}{window} $\ast$ \hyperlink{ili9341__hal_8c_aa55d6901951c7fe057e8d32477b5e122}{tft}
\item 
\hyperlink{send_8c_a435d1572bf3f880d55459d9805097f62}{uint32\+\_\+t} \hyperlink{ili9341__hal_8c_aea367e3f9b73fa46e33fde5cc268b148}{tft\+\_\+clock} = -\/1
\begin{DoxyCompactList}\small\item\em cahce of S\+PI clock devisor \end{DoxyCompactList}\item 
\hyperlink{send_8c_a273cf69d639a59973b6019625df33e30}{uint16\+\_\+t} \hyperlink{ili9341__hal_8c_afd0704ffdcfd5d17f5437814c2860130}{tft\+\_\+\+ID}
\end{DoxyCompactItemize}


\subsection{Detailed Description}
ili9341 driver inspired by Adafruit ili9341 code All code in this file has been rewritten by Mike Gore 

\begin{DoxyParagraph}{Copyright \copyright{} 2016 Mike Gore, G\+PL License}

\end{DoxyParagraph}
\begin{DoxyParagraph}{You are free to use this code under the terms of G\+PL}
please retain a copy of this notice in any code you use it in.
\end{DoxyParagraph}
This is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This software is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU General Public License for more details.

You should have received a copy of the G\+NU General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. 

\subsection{Function Documentation}
\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+addr\+\_\+init@{tft\+\_\+addr\+\_\+init}}
\index{tft\+\_\+addr\+\_\+init@{tft\+\_\+addr\+\_\+init}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+addr\+\_\+init()}{tft_addr_init()}}]{\setlength{\rightskip}{0pt plus 5cm}void tft\+\_\+addr\+\_\+init (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{ili9341__hal_8c_acc53be43cd64538a6c33e99db99d26ad}{}\label{ili9341__hal_8c_acc53be43cd64538a6c33e99db99d26ad}


Initialize I\+L\+I9341 command/data G\+P\+IO return\+: void. 



Definition at line 112 of file ili9341\+\_\+hal.\+c.



Referenced by tft\+\_\+init().

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+init@{tft\+\_\+init}}
\index{tft\+\_\+init@{tft\+\_\+init}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+init(void)}{tft_init(void)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} {\bf window}$\ast$ tft\+\_\+init (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{ili9341__hal_8c_a14e5cdfbb744c04570df508551f77add}{}\label{ili9341__hal_8c_a14e5cdfbb744c04570df508551f77add}


Initialize T\+FT. 

\begin{DoxyReturn}{Returns}
diplay ID 9341 
\end{DoxyReturn}


Definition at line 178 of file ili9341\+\_\+hal.\+c.



Referenced by setup().

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+reset\+\_\+disable@{tft\+\_\+reset\+\_\+disable}}
\index{tft\+\_\+reset\+\_\+disable@{tft\+\_\+reset\+\_\+disable}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+reset\+\_\+disable()}{tft_reset_disable()}}]{\setlength{\rightskip}{0pt plus 5cm}void tft\+\_\+reset\+\_\+disable (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{ili9341__hal_8c_ad9642ac50851a61847cfa7b769741caa}{}\label{ili9341__hal_8c_ad9642ac50851a61847cfa7b769741caa}


disnable I\+L\+I9341 reset return\+: void 



Definition at line 120 of file ili9341\+\_\+hal.\+c.



Referenced by tft\+\_\+init().

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+reset\+\_\+enable@{tft\+\_\+reset\+\_\+enable}}
\index{tft\+\_\+reset\+\_\+enable@{tft\+\_\+reset\+\_\+enable}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+reset\+\_\+enable()}{tft_reset_enable()}}]{\setlength{\rightskip}{0pt plus 5cm}void tft\+\_\+reset\+\_\+enable (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{ili9341__hal_8c_aaba28fac5eafbd4490439bec5025f30a}{}\label{ili9341__hal_8c_aaba28fac5eafbd4490439bec5025f30a}


enable I\+L\+I9341 reset return\+: void 



Definition at line 103 of file ili9341\+\_\+hal.\+c.



Referenced by tft\+\_\+init().

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+reset\+\_\+init@{tft\+\_\+reset\+\_\+init}}
\index{tft\+\_\+reset\+\_\+init@{tft\+\_\+reset\+\_\+init}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+reset\+\_\+init()}{tft_reset_init()}}]{\setlength{\rightskip}{0pt plus 5cm}void tft\+\_\+reset\+\_\+init (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{ili9341__hal_8c_aded8e26c838cde7f120917432deac7a3}{}\label{ili9341__hal_8c_aded8e26c838cde7f120917432deac7a3}


Initialize I\+L\+I9341 reset G\+P\+IO return\+: void. 



Definition at line 94 of file ili9341\+\_\+hal.\+c.



Referenced by tft\+\_\+init().

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+spi\+\_\+begin@{tft\+\_\+spi\+\_\+begin}}
\index{tft\+\_\+spi\+\_\+begin@{tft\+\_\+spi\+\_\+begin}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+spi\+\_\+begin()}{tft_spi_begin()}}]{\setlength{\rightskip}{0pt plus 5cm}void tft\+\_\+spi\+\_\+begin (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{ili9341__hal_8c_a28ac4cdd7bd9de529370205c64b88f8e}{}\label{ili9341__hal_8c_a28ac4cdd7bd9de529370205c64b88f8e}


Obtain S\+PI bus for T\+FT display, assert chip select return\+: void. 



Definition at line 80 of file ili9341\+\_\+hal.\+c.



Referenced by tft\+\_\+bit\+\_\+blit(), tft\+\_\+\+Cmd\+\_\+\+Data\+\_\+\+T\+X(), tft\+\_\+\+Fill\+Poly\+Line(), tft\+\_\+fill\+Rect\+W\+H(), tft\+\_\+invert\+Display(), tft\+\_\+read\+Pixel(), tft\+\_\+read\+Rect(), tft\+\_\+read\+Register(), and tft\+\_\+write\+Rect().

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+spi\+\_\+end@{tft\+\_\+spi\+\_\+end}}
\index{tft\+\_\+spi\+\_\+end@{tft\+\_\+spi\+\_\+end}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+spi\+\_\+end()}{tft_spi_end()}}]{\setlength{\rightskip}{0pt plus 5cm}void tft\+\_\+spi\+\_\+end (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{ili9341__hal_8c_a4f8c3c083a3cd3792dd3d995c1eb2ec5}{}\label{ili9341__hal_8c_a4f8c3c083a3cd3792dd3d995c1eb2ec5}


Release S\+PI bus from T\+FT display, deassert chip select return\+: void. 



Definition at line 87 of file ili9341\+\_\+hal.\+c.



Referenced by tft\+\_\+bit\+\_\+blit(), tft\+\_\+\+Cmd\+\_\+\+Data\+\_\+\+T\+X(), tft\+\_\+\+Fill\+Poly\+Line(), tft\+\_\+fill\+Rect\+W\+H(), tft\+\_\+invert\+Display(), tft\+\_\+read\+Pixel(), tft\+\_\+read\+Rect(), tft\+\_\+read\+Register(), and tft\+\_\+write\+Rect().

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+spi\+\_\+init\+\_\+fast@{tft\+\_\+spi\+\_\+init\+\_\+fast}}
\index{tft\+\_\+spi\+\_\+init\+\_\+fast@{tft\+\_\+spi\+\_\+init\+\_\+fast}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+spi\+\_\+init\+\_\+fast()}{tft_spi_init_fast()}}]{\setlength{\rightskip}{0pt plus 5cm}void tft\+\_\+spi\+\_\+init\+\_\+fast (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\hypertarget{ili9341__hal_8c_abac73802498470361f0016d28706fe49}{}\label{ili9341__hal_8c_abac73802498470361f0016d28706fe49}


Initialize T\+FT S\+PI clock speed and pin for normal speed return\+: void. 



Definition at line 72 of file ili9341\+\_\+hal.\+c.



Referenced by tft\+\_\+init().

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+spi\+\_\+init\+\_\+slow@{tft\+\_\+spi\+\_\+init\+\_\+slow}}
\index{tft\+\_\+spi\+\_\+init\+\_\+slow@{tft\+\_\+spi\+\_\+init\+\_\+slow}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+spi\+\_\+init\+\_\+slow()}{tft_spi_init_slow()}}]{\setlength{\rightskip}{0pt plus 5cm}void tft\+\_\+spi\+\_\+init\+\_\+slow (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\hypertarget{ili9341__hal_8c_ae9b390c9f820454445688b1d4d76d84d}{}\label{ili9341__hal_8c_ae9b390c9f820454445688b1d4d76d84d}


Initialize T\+FT S\+PI clock speed and pin for slow speed Only used to read the C\+H\+IP ID return\+: void. 



Definition at line 64 of file ili9341\+\_\+hal.\+c.



Referenced by tft\+\_\+init().

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+spi\+\_\+\+RX@{tft\+\_\+spi\+\_\+\+RX}}
\index{tft\+\_\+spi\+\_\+\+RX@{tft\+\_\+spi\+\_\+\+RX}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+spi\+\_\+\+R\+X(uint8\+\_\+t $\ast$data, int bytes, uint8\+\_\+t command)}{tft_spi_RX(uint8_t *data, int bytes, uint8_t command)}}]{\setlength{\rightskip}{0pt plus 5cm}void tft\+\_\+spi\+\_\+\+RX (
\begin{DoxyParamCaption}
\item[{{\bf uint8\+\_\+t} $\ast$}]{data, }
\item[{int}]{bytes, }
\item[{{\bf uint8\+\_\+t}}]{command}
\end{DoxyParamCaption}
)}\hypertarget{ili9341__hal_8c_aad54db2d053d783c70669fdbd414fda1}{}\label{ili9341__hal_8c_aad54db2d053d783c70669fdbd414fda1}


read 8 bit data array 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$data} & data buffer to send \\
\hline
\mbox{\tt in}  & {\em bytes} & data buffer size \\
\hline
\mbox{\tt in}  & {\em command} & 1 = command, 0 = data return\+: void \\
\hline
\end{DoxyParams}


Definition at line 165 of file ili9341\+\_\+hal.\+c.



Referenced by tft\+\_\+\+Fill\+Poly\+Line(), tft\+\_\+read\+Pixel(), and tft\+\_\+read\+Rect().

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+spi\+\_\+\+TX@{tft\+\_\+spi\+\_\+\+TX}}
\index{tft\+\_\+spi\+\_\+\+TX@{tft\+\_\+spi\+\_\+\+TX}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+spi\+\_\+\+T\+X(uint8\+\_\+t $\ast$data, int bytes, uint8\+\_\+t command)}{tft_spi_TX(uint8_t *data, int bytes, uint8_t command)}}]{\setlength{\rightskip}{0pt plus 5cm}void tft\+\_\+spi\+\_\+\+TX (
\begin{DoxyParamCaption}
\item[{{\bf uint8\+\_\+t} $\ast$}]{data, }
\item[{int}]{bytes, }
\item[{{\bf uint8\+\_\+t}}]{command}
\end{DoxyParamCaption}
)}\hypertarget{ili9341__hal_8c_aa975fa5ad6bb7e52356d9d66ac733196}{}\label{ili9341__hal_8c_aa975fa5ad6bb7e52356d9d66ac733196}


Transmit 8 bit data array. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$data} & data buffer to send \\
\hline
\mbox{\tt in}  & {\em bytes} & data buffer size \\
\hline
\mbox{\tt in}  & {\em command} & 1 = command, 0 = data return\+: void \\
\hline
\end{DoxyParams}


Definition at line 134 of file ili9341\+\_\+hal.\+c.



Referenced by tft\+\_\+bit\+\_\+blit(), tft\+\_\+\+Cmd(), tft\+\_\+\+Cmd\+\_\+\+Data\+\_\+\+T\+X(), tft\+\_\+fill\+Rect\+W\+H(), and tft\+\_\+write\+Rect().

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+spi\+\_\+\+T\+X\+RX@{tft\+\_\+spi\+\_\+\+T\+X\+RX}}
\index{tft\+\_\+spi\+\_\+\+T\+X\+RX@{tft\+\_\+spi\+\_\+\+T\+X\+RX}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+spi\+\_\+\+T\+X\+R\+X(uint8\+\_\+t $\ast$data, int bytes, uint8\+\_\+t command)}{tft_spi_TXRX(uint8_t *data, int bytes, uint8_t command)}}]{\setlength{\rightskip}{0pt plus 5cm}void tft\+\_\+spi\+\_\+\+T\+X\+RX (
\begin{DoxyParamCaption}
\item[{{\bf uint8\+\_\+t} $\ast$}]{data, }
\item[{int}]{bytes, }
\item[{{\bf uint8\+\_\+t}}]{command}
\end{DoxyParamCaption}
)}\hypertarget{ili9341__hal_8c_ad2eda0e245536550e1a28da1d652629e}{}\label{ili9341__hal_8c_ad2eda0e245536550e1a28da1d652629e}


Transmit and read 8 bit data array. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$data} & data buffer to send \\
\hline
\mbox{\tt in}  & {\em bytes} & data buffer size \\
\hline
\mbox{\tt in}  & {\em command} & 1 = command, 0 = data return\+: void \\
\hline
\end{DoxyParams}


Definition at line 149 of file ili9341\+\_\+hal.\+c.



Referenced by tft\+\_\+\+Data().



\subsection{Variable Documentation}
\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft@{tft}}
\index{tft@{tft}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft}{tft}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf window}$\ast$ tft}\hypertarget{ili9341__hal_8c_aa55d6901951c7fe057e8d32477b5e122}{}\label{ili9341__hal_8c_aa55d6901951c7fe057e8d32477b5e122}


Definition at line 45 of file ili9341.\+c.

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+clock@{tft\+\_\+clock}}
\index{tft\+\_\+clock@{tft\+\_\+clock}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+clock}{tft_clock}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf uint32\+\_\+t} tft\+\_\+clock = -\/1}\hypertarget{ili9341__hal_8c_aea367e3f9b73fa46e33fde5cc268b148}{}\label{ili9341__hal_8c_aea367e3f9b73fa46e33fde5cc268b148}


cahce of S\+PI clock devisor 

\subsection*{============================================================= }

Start S\+PI Hardware Abstraction Layer Keep all hardware dependent S\+PI code in this section 

Definition at line 42 of file ili9341\+\_\+hal.\+c.



Referenced by tft\+\_\+spi\+\_\+begin(), tft\+\_\+spi\+\_\+init\+\_\+fast(), and tft\+\_\+spi\+\_\+init\+\_\+slow().

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tft\+\_\+\+ID@{tft\+\_\+\+ID}}
\index{tft\+\_\+\+ID@{tft\+\_\+\+ID}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tft\+\_\+\+ID}{tft_ID}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf uint16\+\_\+t} tft\+\_\+\+ID}\hypertarget{ili9341__hal_8c_afd0704ffdcfd5d17f5437814c2860130}{}\label{ili9341__hal_8c_afd0704ffdcfd5d17f5437814c2860130}


Definition at line 44 of file ili9341\+\_\+hal.\+c.



Referenced by test\+\_\+types(), and tft\+\_\+init().

\index{ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}!tftwin@{tftwin}}
\index{tftwin@{tftwin}!ili9341\+\_\+hal.\+c@{ili9341\+\_\+hal.\+c}}
\subsubsection[{\texorpdfstring{tftwin}{tftwin}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf window} tftwin}\hypertarget{ili9341__hal_8c_a460d9cc0fd386002d9485f2a0ed585d8}{}\label{ili9341__hal_8c_a460d9cc0fd386002d9485f2a0ed585d8}


Definition at line 44 of file ili9341.\+c.

